package com.jpcc.vw.onlineRadio.utils;

import android.content.Context;

import com.google.gson.Gson;
import com.jpcc.vw.onlineRadio.application.MusicApplication;
import com.jpcc.vw.onlineRadio.db.DatabaseHelperOrm;
import com.jpcc.vw.onlineRadio.db.SearchHistoryDbBean;
import com.jpcc.vw.onlineRadio.http.HttpClient;
import com.jpcc.vw.onlineRadio.model.IRadio;
import com.jpcc.vw.onlineRadio.model.bean.BaseBean;
import com.jpcc.vw.onlineRadio.model.bean.NewSearchHistoryBean;
import com.jpcc.vw.onlineRadio.model.impl.RadioImpl;
import com.orhanobut.logger.Logger;
import com.zhy.http.okhttp.callback.StringCallback;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import okhttp3.Call;

public class SyncSearchHistory {
    private Context context;
    private static DatabaseHelperOrm helper;

    public interface onSyncFav {

        void onSyncFavSuccess();

        void onsyncFavFail();
    }

    /**
     * 同步收藏列表
     */
    public static void syncFav(Context context, SyncFavUtils.onSyncFav callback) {
        IRadio model = new RadioImpl();
        helper = DatabaseHelperOrm.getHelper(context);
        mergeFavData(context, callback);
    }

    private static void mergeFavData(Context context, SyncFavUtils.onSyncFav callback) {
//        try {
//            SearchSyncBean syncBean = new SearchSyncBean();
//            syncBean.setKeywords("");
//            List<SearchHistoryDbBean> sources = helper.getSearchHistoryDao().queryBuilder().orderBy("timeStamp", false).where().eq("userId", MusicApplication.GetUserId()).query();
//            if (sources != null && sources.size() > 0) {
//                for (SearchHistoryDbBean db : sources) {
//                    syncBean.setKeywords(syncBean.getKeywords() + db.getSearchWord() + ",");
//                }
//                syncBean.setKeywords(syncBean.getKeywords().substring(0, syncBean.getKeywords().length() - 1));
//                String jsonSync = new Gson().toJson(syncBean);
//                Logger.i("jsonSync-->" + jsonSync);
//                HttpClient.SyncSearchHistory(jsonSync, new StringCallback() {
//                    @Override
//                    public void onError(Call call, Exception e, int id) {
//                        Logger.i(e.toString());
//                        if(callback!=null){
//                            callback.onsyncFavFail();
//                        }
//                    }
//
//                    @Override
//                    public void onResponse(String response, int id) {
//                        Logger.i(response.toString());
//                        if(callback!=null){
//                            BaseBean responseBean=new Gson().fromJson(response,BaseBean.class);
//                            if(responseBean.getCode()==0){
//                                callback.onSyncFavSuccess();
//                            }
//                            else{
//                                callback.onsyncFavFail();
//                            }
//                        }
//                    }
//                });
//            }


//            SearchSyncBean syncBean = new SearchSyncBean();
//            syncBean.setKeywords("");
//            syncBean.setKeywords(PreferenceUtils.GetSearchKeywords());
        try {
            List<SearchHistoryDbBean> sources = helper.getSearchHistoryDao().queryBuilder().orderBy("timeStamp", false).where().eq("userId", MusicApplication.GetUserId()).query();
            List<NewSearchHistoryBean> toSyncBeans = new ArrayList<>();
            List<String> localSearchKeywords=new ArrayList<>();
            for (SearchHistoryDbBean dbBean : sources) {
                if(localSearchKeywords.size()<10){
                    localSearchKeywords.add(dbBean.getSearchWord());
                }
            }
            IRadio radioModel=new RadioImpl();
//            radioModel.GetSearchHistory().subscribe(new CommonSubscriber<>())
            for (SearchHistoryDbBean dbBean : sources) {
                NewSearchHistoryBean toSyncBean = new NewSearchHistoryBean();
                toSyncBean.setKeyword(dbBean.getSearchWord());
                toSyncBean.setSearchTimestamp(dbBean.getTimeStamp());
//                toSyncBeans.add(toSyncBean);

                if(toSyncBeans.size()<10){
                    toSyncBeans.add(toSyncBean);
                }


            }
            String jsonSync = new Gson().toJson(toSyncBeans);
            HttpClient.SyncSearchHistory(jsonSync, new StringCallback() {
                @Override
                public void onError(Call call, Exception e, int id) {
                    Logger.i(e.toString());
                    if (callback != null) {
                        callback.onsyncFavFail();
                    }
                }

                @Override
                public void onResponse(String response, int id) {
                    Logger.i(response.toString());
                    if (callback != null) {
                        BaseBean responseBean = new Gson().fromJson(response, BaseBean.class);
                        if (responseBean.getCode() == 0) {
                            callback.onSyncFavSuccess();
                        } else {
                            callback.onsyncFavFail();
                        }
                    }
                }
            });
        } catch (SQLException e) {
            e.printStackTrace();
        }


//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
    }
}
